package com.ns.sbs.oauth.role.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ns.core.vo.bs.BaseVO;
import com.ns.sbs.oauth.role.dto.RolePageDto;
import com.ns.sbs.oauth.role.entry.RoleEntry;
import com.ns.sbs.oauth.role.vo.RoleEntryVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Mapper: 系统角色表
 *
 * @author lw
 */
@Mapper
public interface RoleMapper extends BaseMapper<RoleEntry> {

    /**
     * 查
     *
     * @param id 参数
     * @return Role
     */
    RoleEntryVO getById(Long id);

    /**
     * 查
     *
     * @param dto  参数
     * @param page 分页参数
     * @return List
     */
    Page<RoleEntryVO> getList(@Param("dto") RolePageDto dto, @Param("page") Page page);


    /**
     * 查，根据角色名字
     *
     * @param name 参数
     * @return Role
     */
    RoleEntryVO getByRoleName(String name);

    /**
     * 根据用户查询角色
     *
     * @param accId
     * @return
     */
    RoleEntryVO getByAccId(@Param("accId") Long accId, @Param("sid") Long sid);

    /**
     * 查询当前租户该服务下的角色
     *
     * @param dto 条件
     * @return BaseVO
     */
    List<BaseVO> getOptions(RolePageDto dto);

    /**
     * 根据账户id 服务id 租户id查询角色
     *
     * @param accId 账户
     * @param sid   服务id
     * @param rid   租户id
     * @return RoleEntryVO
     */
    RoleEntryVO getRoleByAccIdAndSidAndRid(@Param("accId") Long accId, @Param("sid") Long sid, @Param("rid") Long rid);
}
